package com.projeto.bola.web.participanteGrupo;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import com.projeto.bola.web.grupoEsporte.GrupoEsporte;
import com.projeto.bola.web.perfil.Perfil;
import com.projeto.bola.web.usuario.Usuario;


@Entity
@Table(name="participante_grupo")
@IdClass(UsuarioGrupoID.class)
public class ParticipanteGrupo implements Serializable{
	
	private static final long serialVersionUID = 1L;

	@Column(name="data_inclusao")
	private Date dataInclusao;
	
	@Id
    @ManyToOne
    @JoinColumn(name="id_usuario")
	private Usuario usuarios;
	
	@Id
    @ManyToOne
    @JoinColumn(name="id_grupo")
	private GrupoEsporte grupos;
	
	@Column(name = "usuario_ativo")
	private Boolean usuarioAtivo;
	
	@OneToOne
	@JoinColumn(name="id_perfil")
	private Perfil perfil;
	
	
	public Usuario getUsuarios() {
		return usuarios;
	}

	public void setUsuarios(Usuario usuarios) {
		this.usuarios = usuarios;
	}

	public GrupoEsporte getGrupos() {
		return grupos;
	}

	public void setGrupos(GrupoEsporte grupos) {
		this.grupos = grupos;
	}

	public Perfil getPerfil() {
		return perfil;
	}

	public void setPerfil(Perfil perfil) {
		this.perfil = perfil;
	}

	public Date getDataInclusao() {
		return dataInclusao;
	}

	public void setDataInclusao(Date dataInclusao) {
		this.dataInclusao = dataInclusao;
	}

	public Boolean getUsuarioAtivo() {
		return usuarioAtivo;
	}

	public void setUsuarioAtivo(Boolean usuarioAtivo) {
		this.usuarioAtivo = usuarioAtivo;
	}
	
	public ParticipanteGrupo() {					
	}

	public ParticipanteGrupo(Date dataInclusao, Usuario usuarios,
			GrupoEsporte grupos, Boolean usuarioAtivo, Perfil perfil) {
		this.dataInclusao = dataInclusao;
		this.usuarios = usuarios;
		this.grupos = grupos;
		this.usuarioAtivo = usuarioAtivo;
		this.perfil = perfil;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((dataInclusao == null) ? 0 : dataInclusao.hashCode());
		result = prime * result + ((grupos == null) ? 0 : grupos.hashCode());
		result = prime * result + ((perfil == null) ? 0 : perfil.hashCode());
		result = prime * result
				+ ((usuarioAtivo == null) ? 0 : usuarioAtivo.hashCode());
		result = prime * result
				+ ((usuarios == null) ? 0 : usuarios.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		ParticipanteGrupo other = (ParticipanteGrupo) obj;
		if (dataInclusao == null) {
			if (other.dataInclusao != null)
				return false;
		} else if (!dataInclusao.equals(other.dataInclusao))
			return false;
		if (grupos == null) {
			if (other.grupos != null)
				return false;
		} else if (!grupos.equals(other.grupos))
			return false;
		if (perfil == null) {
			if (other.perfil != null)
				return false;
		} else if (!perfil.equals(other.perfil))
			return false;
		if (usuarioAtivo == null) {
			if (other.usuarioAtivo != null)
				return false;
		} else if (!usuarioAtivo.equals(other.usuarioAtivo))
			return false;
		if (usuarios == null) {
			if (other.usuarios != null)
				return false;
		} else if (!usuarios.equals(other.usuarios))
			return false;
		return true;
	}		
	
}
